/**
 * All rights Reserved, Designed By <a href="www.itttq.com" target="_blank">www.itttq.com</a>
 *
 * @Title: Ttt.java
 * @Package com.itttq.tools.mybatis.to
 * @author: 迷蝶
 * @date: 2017年7月15日 下午5:21:03
 * @version V1.0.0
 * @Copyright: 2017 <a href="www.itttq.com" target="_blank">www.itttq.com</a> Inc. All rights reserved.
 */
package com.itttq.gen.generator.to;

import lombok.Builder;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @ClassName: BaseGeneratorTo
 * @author: 迷蝶
 * @date: 2017年7月15日 下午5:21:03
 * @Description: 基础生成器对象
 * @Copyright: 2017 <a href="www.itttq.com" target="_blank">www.itttq.com</a> Inc. All rights reserved.
 */
@Builder
@Data
public class GeneratorTo implements Comparable<GeneratorTo>, Serializable {
    private static final long serialVersionUID = -2105185147301661373L;

    /**
     * 别名，PO类首字母小写
     */
    private String alias;
    /**
     * 类名称，首字母大小。
     */
    private String aliasCapFirst;
    /**
     * 表名
     */
    private String tableName;
    /**
     * 主键
     */
    private String primaryKey;
    /**
     * 主键JAVA类型
     */
    private String primaryKeyJavaType;
    /**
     * 表注释
     */
    private String remark;
    /**
     * ID字段，这里写死为：${id}
     */
    private String idField;
    /**
     * 字段集合
     */
    private List<ColumnTo> fields;

    /*** 下面为POJO相关配置 **/
    /**
     * java po类名称
     */
    private String poName;
    /**
     * po包名
     */
    private String poPkg;
    private String qoName;
    private String qoPkg;
    private String toPkg;
    /**
     * PO序列化数值
     */
    private String poSerialVersionUID;
    /**
     * 额外引入的jar包
     */
    private List<String> poImportPkgs;

    /*** 下面为SERVICE相关配置 **/
    /**
     * java service类名称
     */
    private String serviceName;
    /**
     * Service包名
     */
    private String servicePkg;

    /*** 下面为MAPPER相关配置 **/
    /**
     * mapper包名
     */
    private String mapperPkg;
    /**
     * java mapper类名称
     */
    private String mapperName;

    /*** 下面为CONTROLLER相关配置 **/
    /**
     * controller包名
     */
    private String controllerPkg;
    /**
     * java controller类名称
     */
    private String controllerName;
    /**
     * java controller类名称
     */
    private String controllerSerialVersionUID;

    private Integer swaggerEnable;

    @Override
    public int compareTo(GeneratorTo other) {
        if (other == null) {
            return 1;
        }
        return this.getPoName().compareTo(other.getPoName());
    }
}
